home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / redakcyjne / programy / VideoLAN Client (VLC) 1.0.5 / vlc-1.0.5-win32.exe / lua / README.txt
Text File  |  2010-01-30  |  13KB  |  326 lines

  1. Instructions to code your own VLC Lua scripts.
  2. $Id$
  3.  
  4. 1 - About Lua
  5. =============
  6.  
  7. Lua documenation is available on http://www.lua.org . The reference manual
  8. is very usefull: http://www.lua.org/manual/5.1/ .
  9. VLC uses Lua 5.1
  10. All the Lua standard libraries are available.
  11.  
  12. 2 - Lua in VLC
  13. ==============
  14.  
  15. 3 types of VLC Lua scripts can currently be coded:
  16.  * Playlist (see playlist/README.txt)
  17.  * Art fetcher (see meta/README.txt)
  18.  * Interface (see intf/README.txt)
  19.  
  20. Lua scripts are tried in alphabetical order in the user's VLC config
  21. directory lua/{playlist,meta,intf}/ subdirectory on Windows and Mac OS X or
  22. in the user's local share directory (~/.local/share/vlc/lua/... on linux),
  23. then in the global VLC lua/{playlist,meta,intf}/ directory.
  24.  
  25. 3 - VLC specific Lua modules
  26. ============================
  27.  
  28. All VLC specifc modules are in the "vlc" object. For example, if you want
  29. to use the "info" function of the "msg" VLC specific Lua module:
  30. vlc.msg.info( "This is an info message and will be displayed in the console" )
  31.  
  32. Note: availability of the different VLC specific Lua modules depends on
  33. the type of VLC Lua script your are in.
  34.  
  35. Access lists
  36. ------------
  37. local a = vlc.acl(true) -> new ACL with default set to allow
  38. a:check("10.0.0.1") -> 0 == allow, 1 == deny, -1 == error
  39. a("10.0.0.1") -> same as a:check("10.0.0.1")
  40. a:duplicate() -> duplicate ACL object
  41. a:add_host("10.0.0.1",true) -> allow 10.0.0.1
  42. a:add_net("10.0.0.0",24,true) -> allow 10.0.0.0/24 (not sure)
  43. a:load_file("/path/to/acl") -> load ACL from file
  44.  
  45. Configuration
  46. -------------
  47. config.get( name ): Get the VLC configuration option "name"'s value.
  48. config.set( name, value ): Set the VLC configuration option "name"'s value.
  49.  
  50. HTTPd
  51. -----
  52. http( host, port, [cert, key, ca, crl]): create a new HTTP (SSL) daemon.
  53.  
  54. local h = vlc.httpd( "localhost", 8080 )
  55. h:handler( url, user, password, acl, callback, data ) -- add a handler for given url. If user and password are non nil, they will be used to authenticate connecting clients. If acl is non nil, it will be used to restrict access. callback will be called to handle connections. The callback function takes 7 arguments: data, url, request, type, in, addr, host. It returns the reply as a string.
  56. h:file( url, mime, user, password, acl, callback, data ) -- add a file for given url with given mime type. If user and password are non nil, they will be used to authenticate connecting clients. If acl is non nil, it will be used to restrict access. callback will be called to handle connections. The callback function takes 2 arguments: data and request. It returns the reply as a string.
  57. h:redirect( url_dst, url_src ): Redirect all connections from url_src to url_dst.
  58.  
  59. Input
  60. -----
  61. input.info(): Get the current input's info. Return value is a table of tables. Keys of the top level table are info category labels.
  62. input.is_playing(): Return true if input exists.
  63. input.get_title(): Get the input's name.
  64. input.stats(): Get statistics about the input. This is a table with the following fields:
  65.     .read_bytes
  66.     .input_bitrate
  67.     .demux_read_bytes
  68.     .demux_bitrate
  69.     .decoded_video
  70.     .displayed_pictures
  71.     .lost_pictures
  72.     .decoded_audio
  73.     .played_abuffers
  74.     .lost_abuffers
  75.     .sent_packets
  76.     .sent_bytes
  77.     .send_bitrate
  78.  
  79. Messages
  80. --------
  81. msg.dbg( [str1, [str2, [...]]] ): Output debug messages (-vv).
  82. msg.warn( [str1, [str2, [...]]] ): Output warning messages (-v).
  83. msg.err( [str1, [str2, [...]]] ): Output error messages.
  84. msg.info( [str1, [str2, [...]]] ): Output info messages.
  85.  
  86. Misc
  87. ----
  88. misc.version(): Get the VLC version string.
  89. misc.copyright(): Get the VLC copyright statement.
  90. misc.license(): Get the VLC license.
  91.  
  92. misc.datadir(): Get the VLC data directory.
  93. misc.userdatadir(): Get the user's VLC data directory.
  94. misc.homedir(): Get the user's home directory.
  95. misc.configdir(): Get the user's VLC config directory.
  96. misc.cachedir(): Get the user's VLC cache directory.
  97.  
  98. misc.datadir_list( name ): FIXME: write description ... or ditch function
  99.   if it isn't usefull anymore, we have datadir and userdatadir :)
  100.  
  101. misc.mdate(): Get the current date (in milliseconds).
  102. misc.mwait(): Wait for the given date (in milliseconds).
  103.  
  104. misc.lock_and_wait(): Lock our object thread and wait for a wake up signal.
  105.  
  106. misc.should_die(): Returns true if the interface should quit.
  107. misc.quit(): Quit VLC.
  108.  
  109. Net
  110. ---
  111. net.url_parse( url, [option delimiter] ): Parse URL. Returns a table with
  112.   fields "protocol", "username", "password", "host", "port", path" and
  113.   "option".
  114. net.listen_tcp( host, port ): Listen to TCP connections. This returns an
  115.   object with an accept method. This method takes an optional timeout
  116.   argument (in milliseconds). For example:
  117. local l = vlc.net.listen_tcp( "localhost", 1234 )
  118. while true do
  119.   local fd = l:accept( 500 )
  120.   if fd >= 0 do
  121.     net.send( fd, "blabla" )
  122.     net.close( fd )
  123.   end
  124. end
  125. net.close( fd ): Close file descriptor.
  126. net.send( fd, string, [length] ): Send data on fd.
  127. net.recv( fd, [max length] ): Receive data from fd.
  128. net.select( nfds, fds_read, fds_write, timeout ): Monitor a bunch of file
  129.   descriptors. Returns number of fds to handle and the amount of time not
  130.   slept. See "man select".
  131. net.fd_set_new(): Create a new fd_set.
  132. local fds = vlc.net.fd_set_new()
  133. fds:clr( fd ) -- remove fd from set
  134. fds:isset( fd ) -- check if fd is set
  135. fds:set( fd ) -- add fd to set
  136. fds:zero() -- clear the set
  137. net.fd_read( fd, [max length] ): Read data from fd.
  138. net.fd_write( fd, string, [length] ): Write data to fd.
  139. net.stat( path ): Stat a file. Returns a table with the following fields:
  140.     .type
  141.     .mode
  142.     .uid
  143.     .gid
  144.     .size
  145.     .access_time
  146.     .modification_time
  147.     .creation_time
  148. net.opendir( path ): List a directory's contents.
  149.  
  150. Objects
  151. -------
  152. object.input(): Get the current input object.
  153. object.playlist(): Get the playlist object.
  154. object.libvlc(): Get the libvlc object.
  155.  
  156. object.find( object, type, mode ): Find an object of given type. mode can
  157.   be any of "parent", "child" and "anywhere". If set to "parent", it will
  158.   look in "object"'s parent objects. If set to "child" it will look in
  159.   "object"'s children. If set to "anywhere", it will look in all the
  160.   objects. If object is unset, the current module's object will be used.
  161.   Type can be: "libvlc", "playlist", "input", "decoder",
  162.   "vout", "aout", "packetizer", "generic".
  163.   This function is deprecated and slow and should be avoided.
  164. object.find_name( object, name, mode ): Same as above except that it matches
  165.   on the object's name and not type. This function is also slow and should
  166.   be avoided if possible.
  167.  
  168. OSD
  169. ---
  170. osd.icon( type, [id] ): Display an icon on the given OSD channel. Uses the
  171.   default channel is none is given. Icon types are: "pause", "play",
  172.   "speaker" and "mute".
  173. osd.message( string, [id] ): Display text message on the given OSD channel.
  174. osd.slider( position, type, [id] ): Display slider. Position is an integer
  175.   from 0 to 100. Type can be "horizontal" or "vertical".
  176. osd.channel_register(): Register a new OSD channel. Returns the channel id.
  177. osd.channel_clear( id ): Clear OSD channel.
  178.  
  179. Playlist
  180. --------
  181. playlist.prev(): Play previous track.
  182. playlist.next(): Play next track.
  183. playlist.skip( n ): Skip n tracs.
  184. playlist.play(): Play.
  185. playlist.pause(): Pause.
  186. playlist.stop(): Stop.
  187. playlist.clear(): Clear the playlist.
  188. playlist.repeat( [status] ): Toggle item repeat or set to specified value.
  189. playlist.loop( [status] ): Toggle playlist loop or set to specified value.
  190. playlist.random( [status] ): Toggle playlsit random or set to specified value.
  191. playlist.goto( id ): Go to specified track.
  192. playlist.add( ... ): Add a bunch of items to the playlist.
  193.   The playlist is a table of playlist objects.
  194.   A playlist object has the following members:
  195.       .path: the item's full path / URL
  196.       .name: the item's name in playlist (OPTIONAL)
  197.       .title: the item's Title (OPTIONAL, meta data)
  198.       .artist: the item's Artist (OPTIONAL, meta data)
  199.       .genre: the item's Genre (OPTIONAL, meta data)
  200.       .copyright: the item's Copyright (OPTIONAL, meta data)
  201.       .album: the item's Album (OPTIONAL, meta data)
  202.       .tracknum: the item's Tracknum (OPTIONAL, meta data)
  203.       .description: the item's Description (OPTIONAL, meta data)
  204.       .rating: the item's Rating (OPTIONAL, meta data)
  205.       .date: the item's Date (OPTIONAL, meta data)
  206.       .setting: the item's Setting (OPTIONAL, meta data)
  207.       .url: the item's URL (OPTIONAL, meta data)
  208.       .language: the item's Language (OPTIONAL, meta data)
  209.       .nowplaying: the item's NowPlaying (OPTIONAL, meta data)
  210.       .publisher: the item's Publisher (OPTIONAL, meta data)
  211.       .encodedby: the item's EncodedBy (OPTIONAL, meta data)
  212.       .arturl: the item's ArtURL (OPTIONAL, meta data)
  213.       .trackid: the item's TrackID (OPTIONAL, meta data)
  214.       .options: a list of VLC options (OPTIONAL)
  215.                 example: .options = { "fullscreen" }
  216.       .duration: stream duration in seconds (OPTIONAL)
  217.       .meta: custom meta data (OPTIONAL, meta data)
  218.              A .meta field is a table of custom meta categories which
  219.              each have custom meta properties.
  220.              example: .meta = { ["Google video"] = { ["docid"] = "-5784010886294950089"; ["GVP version"] = "1.1" }; ["misc"] = { "Hello" = "World!" } }
  221.   Invalid playlist items will be discarded by VLC.
  222. playlist.enqueue( ... ): like playlist.add() except that track isn't played.
  223. playlist.get( [what, [tree]] ): Get the playist.
  224.   If "what" is a number, then this will return the corresponding playlist
  225.   item's playlist hierarchy. If it is "normal" or "playlist", it will
  226.   return the normal playlist. If it is "ml" or "media library", it will
  227.   return the media library. If it is "root" it will return the full playlist.
  228.   If it is a service discovery module's name, it will return that service
  229.   discovery's playlist. If it is any other string, it won't return anything.
  230.   Else it will return the fullplaylist.
  231.   The second argument, "tree", is optional. If set to true or unset, the
  232.   playlist will be returned in a tree layout. If set to false, the playlist
  233.   will be returned using the flat layout.
  234.   Each playlist item returned will have the following members:
  235.       .id: The item's id.
  236.       .flags: a table with the following members if the corresponing flag is
  237.               set:
  238.           .save
  239.           .skip
  240.           .disabled
  241.           .ro
  242.           .remove
  243.           .expanded
  244.       .name:
  245.       .path:
  246.       .duration: (-1 if unknown)
  247.       .nb_played:
  248.       .children: A table of children playlist items.
  249.  
  250. FIXME: add methods to get an item's meta, options, es ...
  251.  
  252. SD
  253. --
  254. sd.get_services_names(): Get a table of all available service discovery
  255.   modules. The module name is used as key, the long name is used as value.
  256. sd.add( name ): Add service discovery.
  257. sd.remove( name ): Remove service discovery.
  258. sd.is_loaded( name ): Check if service discovery is loaded.
  259.  
  260. Stream
  261. ------
  262. stream( url ): Instantiate a stream object for specific url.
  263.  
  264. s = vlc.stream( "http://www.videolan.org/" )
  265. s:read( 128 ) -- read up to 128 characters. Return 0 if no more data is available (FIXME?).
  266. s:readline() -- read a line. Return nil if EOF was reached.
  267.  
  268. Strings
  269. -------
  270. strings.decode_uri( [uri1, [uri2, [...]]] ): Decode a list of URIs. This
  271.   function returns as many variables as it had arguments.
  272. strings.encode_uri_component( [uri1, [uri2, [...]]] ): Encode a list of URI
  273.   components. This function returns as many variables as it had arguments.
  274. strings.resolve_xml_special_chars( [str1, [str2, [...]]] ): Resolve XML
  275.   special characters in a list of strings. This function returns as many
  276.   variables as it had arguments.
  277. strings.convert_xml_special_chars( [str1, [str2, [...]]] ): Do the inverse
  278.   operation.
  279.  
  280. Variables
  281. ---------
  282. var.get( object, name ): Get the object's variable "name"'s value.
  283. var.set( object, name, value ): Set the object's variable "name" to "value".
  284. var.get_list( object, name ): Get the object's variable "name"'s value list.
  285.   1st return value is the value list, 2nd return value is the text list.
  286. var.create( object, name, value ): Create and set the object's variable "name"
  287.   to "value". Created vars can be of type float, string or bool.
  288.  
  289. var.add_callback( object, name, function, data ): Add a callback to the
  290.   object's "name" variable. Callback functions take 4 arguments: the
  291.   variable name, the old value, the new value and data.
  292. var.del_callback( object, name, function, data ): Delete a callback to
  293.   the object's "name" variable. "function" and "data" must be the same as
  294.   when add_callback() was called.
  295.  
  296. var.command( object name, name, argument ): Issue "object name"'s "name"
  297.   command with argument "argument".
  298. var.libvlc_command( name, arguement ): Issue libvlc's "name" command with
  299.   argument "argument".
  300.  
  301. Video
  302. -----
  303. video.fullscreen( [status] ):
  304.  * toggle fullscreen if no arguments are given
  305.  * switch to fullscreen 1st argument is true
  306.  * disable fullscreen if 1st argument is false
  307.  
  308. VLM
  309. ---
  310. vlm(): Instanciate a VLM object.
  311.  
  312. v = vlc.vlm()
  313. v:execute_command( "new test broadcast" ) -- execute given VLM command
  314.  
  315. Note: if the VLM object is deleted and you were the last person to hold
  316. a reference to it, all VLM items will be deleted.
  317.  
  318. Volume
  319. ------
  320. volume.set( level ): Set volume to an absolute level between 0 and 1024.
  321.   256 is 100%.
  322. volume.get(): Get volume.
  323. volume.up( [n] ): Increment volume by n steps of 32. n defaults to 1.
  324. volume.down( [n] ): Decrement volume by n steps of 32. n defaults to 1.
  325.  
  326.